﻿Imports PTIC_GestionExcel
Imports PTIC_GestionBDD
Imports Actuariat
Imports PTIC_Util
Imports OMANE.moteurTauxGaranti1
Imports OMANE.moteurTauxGaranti2

Public Class gestionExcelTxGar1OMANE
    Inherits abstractGestionExcel

    Protected _universBDD As UniversOMANE
    Protected _paramEtd As ParametresList

    Public Sub New(ByRef Succes As Boolean, ByVal univers As UniversOMANE, ByVal paramColl As ParametresList)
        MyBase.New(Succes)
        Me._universBDD = univers
        Me._paramEtd = paramColl
        'Remplissage de l'onglet résumant les caractéristiques du fichier
        OuvrirFichierExistant(csteEmplacementParametrage & "OMANE_resTauxGarantiMethode1.xls", _
                                      "Param_fichier")
    End Sub

    Public Sub ExcelAffParamFichier()
        ChangerDeFeuilleActive("Param_fichier")
        BeginMAJ()
        EcrireCellule(Today, 6, 5)
        EcrireCellule(_universBDD.listeTraitements.getTraitTbleEncours.nomCompletFichier.nomComplet, 11, 3)
        Dim i As Integer = 17
        For Each c As Correspondance In _universBDD.listeTraitements.getTraitTbleEncours.ListeChampsSortie.Values
            EcrireCellule(c.description, i, 4)
            EcrireCellule(IIf(c.typeChEntree = DefinitionsTypes.typeChEntreeMapping.CONSTANT, _
                                      "''" & c.chBDD.Nom & "'", _
                                     c.chBDD.Nom), i, 5)
            i = i + 1
        Next

    End Sub

    Public Sub ExcelAffParamTranches()
        ChangerDeFeuilleActive("Param_Corresp_Tranches")
        BeginMAJ()
        Dim dtble_descTrAge As DataTable = CType(_universBDD.listeTraitements.getTraitTbleEncoursPrep1.ListeChampsSortie.Item(desctrAge),  _
                                                 CorrespondanceTranche).getDataTableCorrespTranches
        Dim dtble_descTrCapi As DataTable = CType(_universBDD.listeTraitements.getTraitTbleEncoursPrep1.ListeChampsSortie.Item("Tranche de capitaux"),  _
                                                CorrespondanceTranche).getDataTableCorrespTranches

        'Création d'un modèle d'affichage pour les tableaux
        Dim implTableauSimple As IImplTableau
        implTableauSimple = New ImplTableauSimple()
        setImplTableau(implTableauSimple)
        creerTableau("Correspondances associées aux tranches d'âge", _
                     dtble_descTrAge, _
                     8, _
                     3)
        creerTableau("Correspondances associées aux tranches d'âge", _
                     dtble_descTrCapi, _
                     8, _
                     7)
        setImplTableau(New implTableauDefaut())


    End Sub

    Public Sub ExcelAffSegmentation()

        ChangerDeFeuilleActive("Param_Generaux")
        BeginMAJ()
        Dim implTableauSimple As IImplTableau
        implTableauSimple = New ImplTableauSimple()

        Dim tab As New DataTable
        tab.Columns.Add("NomVariable", Type.GetType("System.String"))
        Dim listVarSeg As Dictionary(Of String, Correspondance) = _universBDD.Segmentation.Retenue
        For Each corresp As Correspondance In listVarSeg.Values
            Dim r As DataRow = tab.NewRow()
            r(0) = corresp.description
            tab.Rows.Add(r)
        Next
        setImplTableau(implTableauSimple)
        creerTableau("Liste des variables de segmentation", _
                     tab, _
                     8, _
                     6)
        setImplTableau(New implTableauDefaut())
    End Sub

    Public Sub ExcelAffParamGeneraux()
        ChangerDeFeuilleActive("Param_Generaux")
        Dim indiceLigneHautGauche As Integer = 8
        Dim indiceColonneHautGauche As Integer = 3
        Dim indiceDerniereLigne As Integer = 42
        BeginMAJ()
        For Each p As IParamV2 In _paramEtd.Values
            For i = indiceLigneHautGauche To indiceDerniereLigne
                If LireCellule(i, indiceColonneHautGauche) = p.description Then
                    'xlEtude.EcrireCellule("OK ce paramètre a été retouvé", i, indiceColonneHautGauche + 1)
                    If p.nature = paramNature.Unique Then
                        EcrireCellule(p.getValeurUniqueAsObject, i, indiceColonneHautGauche + 1)
                        SelectionRange(i, indiceColonneHautGauche + 1, i, indiceColonneHautGauche + 1)
                        changeCouleurTexteRange(Color.Blue)
                    Else
                        'MsgBox("Le paramètre " & p.description & " est déliné.")
                        CreeFeuilleOMANE("ParamDecl_" & p.nom, "Table de paramétrage du " & p.description)
                        creerTableau(p.description, p.getValeursDataTable, 8, 3)
                        Me.ChangerDeFeuilleActive("Param_Generaux")
                        EcrireCellule("Onglet ParamDecl_" & p.nom, i, indiceColonneHautGauche + 1)
                        SelectionRange(i, indiceColonneHautGauche + 1, i, indiceColonneHautGauche + 1)
                        changeCouleurTexteRange(Color.Red)
                    End If
                End If
            Next
        Next

        'Traitements spécifiques pour les tables de travail :
        'Récupération des traitements (les tables de mortalité récupérée sont non abattues)
        Dim dtble_MortF As DataTable = _universBDD.listeTraitements.getTraitTbleMortF.execute_DataTable(True)
        Dim dtble_MortH As DataTable = _universBDD.listeTraitements.getTraitTbleMortH.execute_DataTable(True)
        Dim dtble_INCINVfra As DataTable = _universBDD.getDataTableINCINVfra(csteNomTbleINCINVfra)
        Dim dtble_INCINVtaux As DataTable = _universBDD.getDataTableINCINVtaux(csteNomTbleINCINVtaux)
        Dim dtble_Tarif As DataTable = _universBDD.listeTraitements.getTraitGrilleTarifaire.execute_DataTable(True)
        CreeFeuilleOMANE("ParamTBLE_Mort", "Tables de mortalité")
        creerTableau("Table de mortalité des femmes", dtble_MortF, 8, 3)
        creerTableau("Table de mortalité des hommes", dtble_MortH, 8, 6)
        CreeFeuilleOMANE("ParamTBLE_INCINVtaux", "Taux de maintien en incapacité / invalidité hors franchises")
        creerTableau("Taux de maintien en incap/inval", dtble_INCINVtaux, 8, 3)
        CreeFeuilleOMANE("ParamTBLE_INCINVfra", "Taux d'abattement sur les probabilité de maintien dûs à la franchise")
        creerTableau("Abattements liés à la franchise en incap/inval", dtble_INCINVfra, 8, 3)
        CreeFeuilleOMANE("ParamTBLE_Tarifs", "Grille tarifaire")
        creerTableau("Grille tarifaire", dtble_Tarif, 8, 3)

    End Sub

    Public Sub ExcelAffResDetaillesScenCentral()
        ChangerDeFeuilleActive("Calculs_Segments")
        BeginMAJ()
        Dim tbleResultatMoteur As DataTable = CType(_universBDD.getTraitement(PTIC_Util.nomTraitMoteurMethode1), Moteur_Methode1).tableTravail
        creerTableau("Variables de segmentation", tbleResultatMoteur, 7, 4)
        Dim numSegments As DataTable = New DataTable
        numSegments.Columns.Add("Num_Seg", GetType(Integer))
        For i As Integer = 0 To tbleResultatMoteur.Rows.Count - 1
            Dim newRow As DataRow = numSegments.NewRow
            newRow(0) = i + 1
            numSegments.Rows.Add(newRow)
        Next
        'Ajouter un tableau pour les N° de segments
        creerTableau("Id. Segments", numSegments, 7, 3)
    End Sub

    Public Sub CreeFeuilleOMANE(ByVal nomFeuille As String, ByVal titre As String)
        BeginMAJ()
        creerNouvelleFeuille(nomFeuille)
        HauteurLigne(1, 33.75)
        colorieRange(Color.FromArgb(0, 51, 102))
        HauteurLigne(2, 2.25)
        colorieRange(Color.Red)
        HauteurLigne(3, 33.75)
        colorieRange(Color.FromArgb(192, 192, 192))
        LargeurColonne(1, 10.71)
        colorieRange(Color.Black)
        AfficherGridLines(False)

        'Ecriture de l'entête outil taux garanti
        EcrireCellule("Outil de calcul de la rémunération des distributeurs", 1, 2)
        SelectionRange(1, 2, 1, 11)
        changeCouleurTexteRange(Color.White)
        _MonRange.Font.Size = 14
        _MonRange.Font.Bold = True
        _MonRange.VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter
        _MonRange.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenterAcrossSelection

        'Ecriture du titre
        EcrireCellule(titre, 3, 2)
        SelectionRange(3, 2, 3, 11)
        Me.changeCouleurTexteRange(Color.Black)
        _MonRange.Font.Size = 14
        _MonRange.Font.Bold = True
        _MonRange.VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter
        _MonRange.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenterAcrossSelection
    End Sub

End Class

Public Class gestionExcelTxGar2OMANE
    Inherits abstractGestionExcel

    Protected _universBDD As UniversOMANE
    Protected _paramEtd As ParametresList

    Public Sub New(ByRef Succes As Boolean, ByVal univers As UniversOMANE, ByVal paramColl As ParametresList)
        MyBase.New(Succes)
        Me._universBDD = univers
        Me._paramEtd = paramColl
        'Remplissage de l'onglet résumant les caractéristiques du fichier
        OuvrirFichierExistant(csteEmplacementParametrage & "OMANE_resTauxGarantiMethode2.xls", _
                                      "Param_fichier")
    End Sub

    Public Sub ExcelAffParamFichier()
        ChangerDeFeuilleActive("Param_fichier")
        BeginMAJ()
        EcrireCellule(Today, 6, 5)
        EcrireCellule(_universBDD.listeTraitements.getTraitTbleEncours.nomCompletFichier.nomComplet, 11, 3)
        Dim i As Integer = 17
        For Each c As Correspondance In _universBDD.listeTraitements.getTraitTbleEncours.ListeChampsSortie.Values
            EcrireCellule(c.description, i, 4)
            EcrireCellule(IIf(c.typeChEntree = DefinitionsTypes.typeChEntreeMapping.CONSTANT, _
                                      "''" & c.chBDD.Nom & "'", _
                                     c.chBDD.Nom), i, 5)
            i = i + 1
        Next

    End Sub
    Public Sub ExcelAffParamTranches()
        ChangerDeFeuilleActive("Param_Corresp_Tranches")
        BeginMAJ()
        Dim dtble_descTrAge As DataTable = CType(_universBDD.listeTraitements.getTraitTbleEncoursPrep1.ListeChampsSortie.Item(desctrAge),  _
                                                 CorrespondanceTranche).getDataTableCorrespTranches
        Dim dtble_descTrCapi As DataTable = CType(_universBDD.listeTraitements.getTraitTbleEncoursPrep1.ListeChampsSortie.Item("Tranche de capitaux"),  _
                                                CorrespondanceTranche).getDataTableCorrespTranches

        'Création d'un modèle d'affichage pour les tableaux
        Dim implTableauSimple As IImplTableau
        implTableauSimple = New ImplTableauSimple()
        setImplTableau(implTableauSimple)
        creerTableau("Correspondances associées aux tranches d'âge", _
                     dtble_descTrAge, _
                     8, _
                     3)
        creerTableau("Correspondances associées aux tranches d'âge", _
                     dtble_descTrCapi, _
                     8, _
                     7)
        setImplTableau(New implTableauDefaut())


    End Sub
    Public Sub ExcelAffSegmentation()

        ChangerDeFeuilleActive("Param_fichier")
        BeginMAJ()
        Dim implTableauSimple As IImplTableau
        implTableauSimple = New ImplTableauSimple()

        Dim tab As New DataTable
        tab.Columns.Add("NomVariable", Type.GetType("System.String"))
        Dim listVarSeg As Dictionary(Of String, Correspondance) = _universBDD.Segmentation.Retenue
        For Each corresp As Correspondance In listVarSeg.Values
            Dim r As DataRow = tab.NewRow()
            r(0) = corresp.description
            tab.Rows.Add(r)
        Next
        setImplTableau(implTableauSimple)
        creerTableau("Liste des variables de segmentation", _
                     tab, _
                     39, _
                     4)
        setImplTableau(New implTableauDefaut())
    End Sub
    Public Sub ExcelAffExtraction()
        ChangerDeFeuilleActive("Extraction")
        BeginMAJ()
        Dim tbleExtraction As DataTable = CType(_universBDD.getTraitement(PTIC_Util.nomTraitMoteurMethode2), Moteur_Methode2).scenarioCentral.resultats.TableEntreeEnrichie.Copy
        tbleExtraction.Columns.Add("NumSegment", GetType(Integer))
        tbleExtraction.Columns("NumSegment").SetOrdinal(0)
        Dim i As Integer = 1
        For Each r As DataRow In tbleExtraction.Rows
            r("NumSegment") = i
            i += 1
        Next
        creerTableau("Variables de segmentation", tbleExtraction, 1, 1)
    End Sub

    Public Sub CreeFeuilleOMANE(ByVal nomFeuille As String, ByVal titre As String)
        BeginMAJ()
        creerNouvelleFeuille(nomFeuille)
        HauteurLigne(1, 33.75)
        colorieRange(Color.FromArgb(0, 51, 102))
        HauteurLigne(2, 2.25)
        colorieRange(Color.Red)
        HauteurLigne(3, 33.75)
        colorieRange(Color.FromArgb(192, 192, 192))
        LargeurColonne(1, 10.71)
        colorieRange(Color.Black)
        AfficherGridLines(False)

        'Ecriture de l'entête outil taux garanti
        EcrireCellule("Outil de calcul de la rémunération des distributeurs", 1, 2)
        SelectionRange(1, 2, 1, 11)
        changeCouleurTexteRange(Color.White)
        _MonRange.Font.Size = 14
        _MonRange.Font.Bold = True
        _MonRange.VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter
        _MonRange.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenterAcrossSelection

        'Ecriture du titre
        EcrireCellule(titre, 3, 2)
        SelectionRange(3, 2, 3, 11)
        Me.changeCouleurTexteRange(Color.Black)
        _MonRange.Font.Size = 14
        _MonRange.Font.Bold = True
        _MonRange.VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter
        _MonRange.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenterAcrossSelection
    End Sub

End Class